Implement alpha versioning
authorJeroen van der Heijden <jeroen@transceptor.technology>
Sat, 6 Oct 2018 08:05:27 +0000 (10:05 +0200)
committerJeroen van der Heijden <jeroen@transceptor.technology>
Sat, 6 Oct 2018 08:05:27 +0000 (10:05 +0200)
include/siri/siri.h
include/siri/version.h
main.c
src/siri/admin/request.c
src/siri/args/args.c
src/siri/siri.c
src/siri/version.c
test/test_version/test_version.c

index ece3af80480ce00dd9b929b54413af82c4af2689..9f947d1cd015c8e5c495dc96d0bde7f5c45badd0 100644 (file)
@@ -15,7 +15,6 @@
 #define PCRE2_CODE_UNIT_WIDTH 8
 
 #define SIRI_MAX_SIZE_ERR_MSG 1024
-#define SIRIDB_BUILD_DATE __DATE__ " " __TIME__
 #define MAX_NUMBER_DB 4
 
 typedef enum
index d255e6eaf02b25c230396781ac4274450afb2b30..70219b926f5638a16e230bc8840674f751aed15a 100644 (file)
 #define SIRIDB_VERSION_MINOR 0
 #define SIRIDB_VERSION_PATCH 30
 
+/*
+ * Use SIRIDB_VERSION_PRE_RELEASE for alpha release versions.
+ * This should be an empty string when building a final release.
+ * Examples: "-alpha-0" "-alpha-1", ""
+ */
+#define SIRIDB_VERSION_PRE_RELEASE "-alpha-0"
+
+#if DEBUG
+#define SIRIDB_VERSION_BUILD_RELEASE "+debug"
+#else
+#define SIRIDB_VERSION_BUILD_RELEASE ""
+#endif
+
 #define SIRIDB_STRINGIFY(num) #num
 #define SIRIDB_VERSION_STR(major,minor,patch) \
     SIRIDB_STRINGIFY(major) "." \
     SIRIDB_STRINGIFY(minor) "." \
     SIRIDB_STRINGIFY(patch)
 
-#define SIRIDB_VERSION SIRIDB_VERSION_STR(                \
-        SIRIDB_VERSION_MAJOR,         \
-        SIRIDB_VERSION_MINOR,         \
-        SIRIDB_VERSION_PATCH)
+#define SIRIDB_VERSION SIRIDB_VERSION_STR( \
+        SIRIDB_VERSION_MAJOR, \
+        SIRIDB_VERSION_MINOR, \
+        SIRIDB_VERSION_PATCH) \
+        SIRIDB_VERSION_PRE_RELEASE \
+        SIRIDB_VERSION_BUILD_RELEASE
 
-#define SIRIDB_MAINTAINER "Jeroen van der Heijden <jeroen@transceptor.technology>"
-#define SIRIDB_HOME_PAGE "http://siridb.net"
+#define SIRIDB_CONTRIBUTERS \
+    "https://github.com/SiriDB/siridb-server/contributors"
+#define SIRIDB_HOME_PAGE \
+    "https://siridb.net"
 
 int siri_version_cmp(const char * version_a, const char * version_b);
 
diff --git a/main.c b/main.c
index d6a99d7d3fe6d0b36f47f5d97d479b11a01d498c..4e9940f2e8887e09ed0464bc9629e09e9ca849b1 100644 (file)
--- a/main.c
+++ b/main.c
@@ -49,15 +49,9 @@ int main(int argc, char * argv[])
     /* initialize points dictionary */
     siridb_points_init();
 
-#if DEBUG
-    log_warning("Starting SiriDB Server (%s-DEBUG-RELEASE-%s)",
-            SIRIDB_VERSION,
-            SIRIDB_BUILD_DATE);
-#else
-
     /* start server */
     log_info("Starting SiriDB Server (version: %s)", SIRIDB_VERSION);
-#endif
+
     /* initialize SiriDB mutex (used for the siridb_list) */
     if (uv_mutex_init(&siri.siridb_mutex))
     {
index 9f094bc1162338fd83d8318723296c7797a6faab..aa4af3b3fff94c35c2334c66fd132bbc8bf20583 100644 (file)
@@ -838,12 +838,8 @@ static cproto_server_t ADMIN_on_get_version(
     {
         if (!qp_add_type(packer, QP_ARRAY_OPEN) &&
             !qp_add_string(packer, SIRIDB_VERSION) &&
-#if DEBUG
-            !qp_add_string(packer, "DEBUG") &&
-#else
-            !qp_add_string(packer, "RELEASE") &&
-#endif
-            !qp_add_string(packer, SIRIDB_BUILD_DATE))
+            !qp_add_string(packer, SIRIDB_VERSION_PRE_RELEASE) &&
+            !qp_add_string(packer, SIRIDB_VERSION_BUILD_RELEASE))
         {
             *packaddr = packer;
             return CPROTO_ACK_ADMIN_DATA;
index 32afd4a1da975ce5fec949b9ed5c78aade8d6a91..5ab0b14de3a0a2756e254e9bd5783c125903ad3c 100644 (file)
@@ -88,17 +88,13 @@ void siri_args_parse(siri_t * siri, int argc, char *argv[])
     if (siri_args.version)
     {
         printf(
-                "SiriDB Server %s\n"
-                "Build date: %s\n"
-                "Maintainer: %s\n"
+                "SiriDB Server %s%s%s\n"
+                "Contributers: %s\n"
                 "Home-page: %s\n",
-#ifndef DEBUG
                 SIRIDB_VERSION,
-#else
-                SIRIDB_VERSION "-DEBUG-RELEASE",
-#endif
-                SIRIDB_BUILD_DATE,
-                SIRIDB_MAINTAINER,
+                SIRIDB_VERSION_PRE_RELEASE,
+                SIRIDB_VERSION_BUILD_RELEASE,
+                SIRIDB_CONTRIBUTERS,
                 SIRIDB_HOME_PAGE);
 
         exit(EXIT_SUCCESS);
index 5e3fff77b1b915efd60953062ad5eddaf76a60b4..8db933fbcbce85563a4cab9971f2b6f27b8378c2 100644 (file)
@@ -330,13 +330,7 @@ next:
 
 static void SIRI_destroy(void)
 {
-#ifndef DEBUG
-    log_info("Closing SiriDB Server (version: %s)", SIRIDB_VERSION);
-#else
-    log_warning("Closing SiriDB Server (%s-DEBUG-RELEASE-%s)",
-            SIRIDB_VERSION,
-            SIRIDB_BUILD_DATE);
-#endif
+    log_warning("Closing SiriDB Server (version: %s)", SIRIDB_VERSION);
     /* stop the event loop */
     uv_stop(siri.loop);
 
index e9386df57495a0943ea5ea9bbea53d48f29afaa2..ff6c2f6107b38f91d2c54be8ad8b04617af8b1ab 100644 (file)
 int siri_version_cmp(const char * version_a, const char * version_b)
 {
     long int a, b;
+    int i = 3;
 
     char * str_a = (char *) version_a;
     char * str_b = (char *) version_b;
 
-    while (1)
+    while (i--)
     {
         a = strtol(str_a, &str_a, 10);
         b = strtol(str_b, &str_b, 10);
@@ -30,23 +31,13 @@ int siri_version_cmp(const char * version_a, const char * version_b)
         {
             return a - b;
         }
-        else if (!*str_a && !*str_b)
+        else if (!*str_a || !*str_b)
         {
             return 0;
         }
-        else if (!*str_a)
-        {
-            return -1;
-        }
-        else if (!*str_b)
-        {
-            return 1;
-        }
         str_a++;
         str_b++;
     }
 
-    /* we should NEVER get here */
-    assert(0);
     return 0;
 }
index 85552d29a12a192560ef1e7e40a7a166a565fe64..95569e252a42b637400506979f69b16b010a659f 100644 (file)
@@ -2,22 +2,77 @@
 #include <siri/version.h>
 
 
+#include <stdio.h>
+#include <stdlib.h>
+
+int old_version_cmp(const char * version_a, const char * version_b)
+{
+    long int a, b;
+
+    char * str_a = (char *) version_a;
+    char * str_b = (char *) version_b;
+
+    while (1)
+    {
+        a = strtol(str_a, &str_a, 10);
+        b = strtol(str_b, &str_b, 10);
+
+        printf("%ld - %ld\n", a, b);
+
+        if (a != b)
+        {
+            return a - b;
+        }
+        else if (!*str_a && !*str_b)
+        {
+            return 0;
+        }
+        else if (!*str_a)
+        {
+            return -1;
+        }
+        else if (!*str_b)
+        {
+            return 1;
+        }
+        str_a++;
+        str_b++;
+    }
+
+    /* we should NEVER get here */
+    _assert (0);
+    return 0;
+}
+
+
 int main()
 {
     test_start("version");
 
+    /* alpha verioning should be ignored by version compare */
     _assert (siri_version_cmp("1.0.0", "2.0.0") < 0);
+    _assert (siri_version_cmp("1.0.0", "2.0.0-alpha-0") < 0);
+    _assert (siri_version_cmp("2.0.0", "1.0.0") > 0);
     _assert (siri_version_cmp("2.0.0", "1.0.0") > 0);
     _assert (siri_version_cmp("2.2.0", "2.32.0") < 0);
     _assert (siri_version_cmp("2.32.0", "2.2.0") > 0);
     _assert (siri_version_cmp("2.0.5", "2.0.22") < 0);
     _assert (siri_version_cmp("2.0.22", "2.0.5") > 0);
-    _assert (siri_version_cmp("2.0", "2.0.0") < 0);
-    _assert (siri_version_cmp("2.0.2", "2.0") > 0);
-    _assert (siri_version_cmp("a", "") > 0);
-    _assert (siri_version_cmp("", "b") < 0);
+    _assert (siri_version_cmp("2.0.5-alpha-0", "2.0.22") < 0);
+    _assert (siri_version_cmp("2.0.22-alpha-0", "2.0.5") > 0);
+    _assert (siri_version_cmp("a", "") == 0);
+    _assert (siri_version_cmp("", "b") == 0);
     _assert (siri_version_cmp("", "") == 0);
-    _assert (siri_version_cmp("2.0.0", "2.0.0") == 0);
+    _assert (siri_version_cmp("2.0.30", "2.0.30") == 0);
+    _assert (siri_version_cmp("2.0.30-alpha-1-debug", "2.0.30") == 0);
+    _assert (siri_version_cmp("2.0.30-alpha-1", "2.0.30-alpha-0") == 0);
+
+    /* old version compare function should not break with -alpha versions */
+    _assert (old_version_cmp("2.0.5-alpha-0", "2.0.22") < 0);
+    _assert (old_version_cmp("2.0.22-alpha-0", "2.0.5") > 0);
+    _assert (old_version_cmp("2.0.30-alpha-1-debug", "2.0.30") > 0);
+    /* This last one is < 0 since -1 < -0 */
+    _assert (old_version_cmp("2.0.30-alpha-1", "2.0.30-alpha-0") < 0);
 
     return test_end();
 }